interface usb {
    type: String
    fun():void;
}

class book implements usb {
    type = '3.0'
    fun(): void {
        console.log('接口的方法。。。接口的类型---', this.type)
    }
}

// let creat = new book()
let creat:usb = new book()
// let creatUsb = new usb() 接口不能创建实例

/** 
 * 函数类型
*/
// let f1:(a:string, b:number) => string; // 声明函数
interface myfun {
    (a:string, b:number): string // 声明函数
}

let f1:myfun; 
f1 = function(name: string, sex: number):string {
    return '我是' + name + '-- 年龄' + sex
}
let a = f1('男', 56)



/**
 * 数组类型
 */
interface myArr {
    [index: number]: string
}
let arr1:myArr
arr1 = ['1', '2']
// console.log(arr1)

/**
 * 对象类型
 */

interface myObj {
    name: string, // 必须属性
    age: string,
    sex?: number  // ?可选属性
}

/**
 * 定义对象类型，必须有 name age 属性，sex为可选属性，可有可无
 * 除了必备属性之外，可以有其他属性
 */
function obj(obj:myObj) {
    console.log(obj)
}
let s = {
    name: '晶晶',
    age: '22',
    hobby: '爱哭' // 可以增加其他属性
}
obj(s)

export {}